<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数</title>
    <script>
        /*
            函数function
                -函数也是一个对象
                -函数中可以封装一些功能（代码），在需要时可以执行这些功能（代码）
                -函数中可以保存一些代码在需要的时候调用
                -使用typeof检查一个函数对象时，会返回function
        */

        /*
            我们在实际开发中很少使用构造函数来创建一个函数对象
            创建一个函数对象
            可以将要封装的代码以字符串的形式传递给构造函数
        */
        var fun = new Function("console.log('hello,这是我的第一个函数');");

        /*
            封装到函数中的代码不会立即执行
            函数中的代码会在函数调用的时候执行
            调用函数  语法：函数对象()
            当调用函数时，函数中封装的代码会按照顺序执行
        */

        fun()

        /*
            使用函数声明来创建一个函数
                语法：
                    function 函数名([形参1，形参2...形参N])
                    {
                        语句...
                    }
        */
        function fun2(){
            console.log("这是我的第二个函数~~~");
            alert("哈哈哈");
            document.write("(。＿ 。） ✎＿学习计划走起")
        }

        console.log(fun2);
        //调用fun2
        fun2();

        /*
            使用函数表达式来创建一个函数
            var 函数名 = function([形参1，形参2...形参n]){
                语句...
            }
        */

        var fun3 = function(){
            console.log("我是匿名函数中封装的代码");
        }
        fun3();
    </script>
</head>
<body>
    
</body>
</html>